/*#pragma once

class Boolean {
public:
        Boolean() {}
        Boolean(int val) :val(val) {}
        bool operator && (const Boolean& other);
        bool operator || (const Boolean& other);
        int getVal() { return val; }
private:
        int val;
};

Boolean booleanTest(Boolean i);

bool boolTest(int i);
*/

#include <iostream>

#include "Boolean.h"

using namespace std;

bool Boolean::operator&&(const Boolean& other) {
    return this->getVal() && other.getVal();
}

bool Boolean::operator||(const Boolean& other) {
    return this->val || other.val;
}
Boolean booleanTest(Boolean i) {
    cout << "Boolean func(Boolean i) : i.val = " << i.getVal() << endl;
    return Boolean(i.getVal());
}

bool boolTest(int i) {
    cout << "bool func(int i) : i = " << i << endl;
    return i;
}